package com.kjzy.service.impl;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.kjzy.mapper.UserMapper;
import com.kjzy.pojo.User;
import com.kjzy.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

//定义业务逻辑层的实现类：使用@Service注解，将该类定义成业务逻辑层 bean。
@Service
public class UserServiceImpl implements UserService {
    // 使用@Autowired注解告诉IoC容器，需要由容器来创建名为userMapper的
    // 持久层bean对象，并依赖注入到本对象的的userMapper属性上。
    @Autowired
    private UserMapper userMapper;
    // 1.调用数据访问层(持久层)userDao的findAdmin方法，根据
    // 用户id和密码，在user表中查询管理员对象。
    public User findAdmin(Integer userId, String password) {
        return userMapper.findAdmin(userId,password);
    }

    public List<User> findUserList(User user) {
        // 1.调用数据访问层(持久层)userMapper的findUserList方法，
        // 多条件查询所有用户信息。
        List<User> list = this.userMapper.findUserList(user);
        // 2.返回(从user表中查询出的)用户集合。
        return list;
    }

    // 分页查询用户
    public PageInfo<User> findUserList(User user, int pageNum, int pageSize) {
        // 设置分页参数，第一个参数是页码，第二个是每页条数
//        pageNum：当前页码，表示查询的是第几页的数据。
//        pageSize：每页显示的记录数，表示每页展示多少条数据。
        System.out.println("service:pageNum:"+pageNum);
        System.out.println("service:pageSize:"+pageSize);
        PageHelper.startPage(pageNum, pageSize);

        // 调用MyBatis的Mapper方法进行查询
        List<User> userList = userMapper.findUserList(user);

        // 返回分页信息
        return new PageInfo<User>(userList);
    }

    public String createUser(User user) {
        // 1. 新增一个用户
        // 1-1.调用数据访问层(持久层)userDao的addUser方法，
        // 在用户表中新增一条用户记录。
        int rows = this.userMapper.addUser(user);
        // 2-2.判断新增用户是否成功。如果新增用户成功，则返回"SUCCESS"，
        //否则返回失败信息。
        if (rows > 0) {
            return "SUCCESS";
        } else {
            return "add user failure.";
        }
    }

    public User findUserById(int id) {
        // 1.调用数据访问层(持久层)userMapper的findUserById方法，
        // 根据用户ID查询user表中的用户。。
        User user  = this.userMapper.findUserById(id);
        // 2.返回(从user表中查询出的)用户对象。
        return user;

    }

    public String updateUser(User user) {
        // 1. 更新一个用户
        // 1-1.调用数据访问层(持久层)userMapper的updateUserById方法，
        // 在用户表中更新一条用户记录。
        int rows = this.userMapper.updateUserById(user);
        // 2-2.判断更新用户是否成功。如果更新用户成功，
        // 则返回"SUCCESS"，否则返回失败信息。
        if (rows > 0) {
            return "SUCCESS";
        } else {
            return "update user failure.";
        }

    }

    public String deleteUser(int id) {
        // 1. 删除一个用户
        // 1-1.调用数据访问层(持久层)userMapper的deleteUserById方法，
        // 在用户表中删除一条用户记录。
        int rows = this.userMapper.deleteUserById(id);
        // 2-2.判断删除用户是否成功。如果删除用户成功，则返回"SUCCESS"，
        // 否则返回失败信息。
        if (rows > 0) {
            return "SUCCESS";
        } else {
            return "delete user failure.";
        }
    }


}
